<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!-- <script src="./vue.js"></script> -->
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
    <div id="app">
        <h3>v-on</h3>
        <div v-show="isVisiable">
            内容
        </div>
        <!-- 格式一：把要执行的代码直接写在""内部。适合少量代码 -->
        <button v-on:click="isVisiable=true">显示内容</button>
        <button v-on:click="isVisiable=false">隐藏内容</button>

        <!-- 格式二：指向methods中的定义的函数 -->
        <!-- 加与不加()一样：v-on:click="f1()" 与 v-on:click="f1" -->
        <button v-on:click="f1">调用methods中的函数</button>
<br>
         <!-- 格式三：指向methods中的定义的函数 -->
         <!-- 注意：
         1. 如果要传入参数，则必须要加()
         2. 如果传入当前这个事件的事件对象，则传入固定名字 $event -->

        <button v-on:click="f2(10)">调用methods中的函数传入10</button>
        <br>
        <button v-on:click="f3(11,$event)">调用methods中的函数传入11,传入事件对象</button>
    </div>

    <script>
        // 功能： v-on 用来监听事件

        // 格式：
        // 格式一：把要执行的代码直接写在""内部。适合少量代码
        // <标签 v-on:事件名="要执行的代码"></标签>

        // 事件名：就是所有的dom原生事件 
        //        click,input,mouseenter,blur,......

        // 格式二：指向methods中的定义的函数
        // <标签 v-on:事件名="methods中的函数"></标签>

        // 格式三：指向methods中的定义的函数，并传入参数
        // <标签 v-on:事件名="methods中的函数(实参)"></标签>

 
        const vm = new Vue({
            el: "#app",
            data: {
                isVisiable: false
            },
            methods: {
                f1 () {
                    console.log("f1被调用")
                    alert(1)
                    this.isVisiable = true
                },
                f2 (m) {
                    alert(m)
                    console.log(m)
                },
                // 形参名m,eventObj。这两名，是可以自己定义的。
                f3 (m, eventObj) {
                    console.log(m, eventObj)
                }

            }
        })
       
    </script>

</body>
</html>